#import <Foundation/Foundation.h>

// Class A declaration and definition
@interface ClassA: NSObject
{
	int x;
	int z;
}
-(void) initVar;
@end

@implementation ClassA
-(void) initVar
{
	x = 100;
}
@end

// ClassB declaration and definition
@interface ClassB: ClassA
{
	int y;
}
-(void) initVar;
-(void) printVar;
@end

@implementation ClassB
-(void) initVar
{
	x = 200;
	y = 300;
}
-(void) printVar
{
	NSLog (@"x = %i", x);
	NSLog (@"y = %i", y);
}
@end

int main (int argc, char *argv[])
{
	NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
	ClassB *b = [[ClassB alloc] init];
	[b initVar]; // uses overriding method in ClassB
	[b printVar]; // reveal values of x and y;
	[b release];
	[pool drain];
	return 0;
}